from rest_framework.response import Response
from rest_framework.views import exception_handler

from utils.common_response import CommonResponse


# 使用时要进行注册'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
def common_exception_handler(exc, context):
    # exc 是异常对象
    # context 是具体哪个函数报错了 context['view']可以直接取出View,context['view'].__class__.__name__可以取出视图类名
    re = exception_handler(exc, context)  # 先调用系统的异常处理
    if re is None:
        return CommonResponse(ret=101, error=str(exc), context=str(context))
    else:
        # return Response("自定义的响应+re.data.get('details')")  # 从已有响应中取出错误信息
        return CommonResponse(ret=100, error=re.data)
